// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: braces fieldsfirst space lnc package com.google.zxing.datamatrix.decoder; import com.google.zxing.FormatException; import com.google.zxing.common.BitMatrix; // Referenced classes of package com.google.zxing.datamatrix.decoder: // Version final class a { private final BitMatrix a; private final BitMatrix b; private final Version c; a(BitMatrix bitmatrix) { int i = bitmatrix.getHeight(); if (i < 8 || i > 144 || (i & 1) != 0) { throw FormatException.getFormatInstance(); } else { c = b(bitmatrix); a = a(bitmatrix); b = new BitMatrix(a.getWidth(), a.getHeight()); return; } } private static Version b(BitMatrix bitmatrix) { return Version.getVersionForDimensions(bitmatrix.getHeight(), bitmatrix.getWidth()); } int a(int i, int j) { int k; int l; int i1; int j1; int k1; int l1; int i2; int j2; if (a(i - 1, 0, i, j)) { k = 1; } else { k = 0; } l = k << 1; if (a(i - 1, 1, i, j)) { l |= 1; } i1 = l << 1; if (a(i - 1, 2, i, j)) { i1 |= 1; } j1 = i1 << 1; if (a(0, j - 2, i, j)) { j1 |= 1; } k1 = j1 << 1; if (a(0, j - 1, i, j)) { k1 |= 1; } l1 = k1 << 1; if (a(1, j - 1, i, j)) { l1 |= 1; } i2 = l1 << 1; if (a(2, j - 1, i, j)) { i2 |= 1; } j2 = i2 << 1; if (a(3, j - 1, i, j)) { j2 |= 1; } return j2; } BitMatrix a(BitMatrix bitmatrix) { int i = c.getSymbolSizeRows(); int j = c.getSymbolSizeColumns(); if (bitmatrix.getHeight() != i) { throw new IllegalArgumentException("Dimension of bitMarix must match the version size"); } int k = c.getDataRegionSizeRows(); int l = c.getDataRegionSizeColumns(); int i1 = i / k; int j1 = j / l; int k1 = i1 * k; BitMatrix bitmatrix1 = new BitMatrix(j1 * l, k1); for (int l1 = 0; l1 < i1; l1++) { int i2 = l1 * k; for (int j2 = 0; j2 < j1; j2++) { int k2 = j2 * l; for (int l2 = 0; l2 < k; l2++) { int i3 = l2 + (1 + l1 * (k + 2)); int j3 = i2 + l2; for (int k3 = 0; k3 < l; k3++) { if (bitmatrix.get(k3 + (1 + j2 * (l + 2)), i3)) { bitmatrix1.set(k2 + k3, j3); } } } } } return bitmatrix1; } Version a() { return c; } boolean a(int i, int j, int k, int l) { int i1; int j1; if (i < 0) { j1 = i + k; i1 = j + (4 - (7 & k + 4)); } else { i1 = j; j1 = i; } if (i1 < 0) { i1 += l; j1 += 4 - (7 & l + 4); } b.set(i1, j1); return a.get(i1, j1); } int b(int i, int j) { int k; int l; int i1; int j1; int k1; int l1; int i2; int j2; if (a(i - 3, 0, i, j)) { k = 1; } else { k = 0; } l = k << 1; if (a(i - 2, 0, i, j)) { l |= 1; } i1 = l << 1; if (a(i - 1, 0, i, j)) { i1 |= 1; } j1 = i1 << 1; if (a(0, j - 4, i, j)) { j1 |= 1; } k1 = j1 << 1; if (a(0, j - 3, i, j)) { k1 |= 1; } l1 = k1 << 1; if (a(0, j - 2, i, j)) { l1 |= 1; } i2 = l1 << 1; if (a(0, j - 1, i, j)) { i2 |= 1; } j2 = i2 << 1; if (a(1, j - 1, i, j)) { j2 |= 1; } return j2; } int b(int i, int j, int k, int l) { boolean flag = a(i - 2, j - 2, k, l); int i1 = 0; if (flag) { i1 = 1; } int j1 = i1 << 1; if (a(i - 2, j - 1, k, l)) { j1 |= 1; } int k1 = j1 << 1; if (a(i - 1, j - 2, k, l)) { k1 |= 1; } int l1 = k1 << 1; if (a(i - 1, j - 1, k, l)) { l1 |= 1; } int i2 = l1 << 1; if (a(i - 1, j, k, l)) { i2 |= 1; } int j2 = i2 << 1; if (a(i, j - 2, k, l)) { j2 |= 1; } int k2 = j2 << 1; if (a(i, j - 1, k, l)) { k2 |= 1; } int l2 = k2 << 1; if (a(i, j, k, l)) { l2 |= 1; } return l2; } byte[] b() { boolean flag; byte abyte0[]; int i; int j; boolean flag1; boolean flag2; boolean flag3; int k; int l; int i1; flag = false; abyte0 = new byte[c.getTotalCodewords()]; i = a.getHeight(); j = a.getWidth(); flag1 = false; flag2 = false; flag3 = false; k = 0; l = 4; i1 = 0; _L5: int i4; int k4; int l4; if (l == i && k == 0 && !flag3) { int j7 = i1 + 1; abyte0[i1] = (byte)a(i, j); int k7 = l - 2; int l7 = k + 2; i4 = j7; k4 = k7; l4 = l7; flag3 = true; } else if (l == i - 2 && k == 0 && (j & 3) != 0 && !flag2) { int k6 = i1 + 1; abyte0[i1] = (byte)b(i, j); int l6 = l - 2; int i7 = k + 2; i4 = k6; k4 = l6; l4 = i7; flag2 = true; } else if (l == i + 4 && k == 2 && (j & 7) == 0 && !flag1) { int l5 = i1 + 1; abyte0[i1] = (byte)c(i, j); int i6 = l - 2; int j6 = k + 2; i4 = l5; k4 = i6; l4 = j6; flag1 = true; } else { if (l != i - 2 || k != 0 || (j & 7) != 4 || flag) { break MISSING_BLOCK_LABEL_583; } int i5 = i1 + 1; abyte0[i1] = (byte)d(i, j); int j5 = l - 2; int k5 = k + 2; i4 = i5; k4 = j5; l4 = k5; flag = true; } goto _L1 _L3: int j1; int l1; int j2; j1 = k2; l1 = j2; _L7: int i2; int l2; int i3; int j3; int k3; int l3; int j4; if (i2 < i && j1 >= 0 && !b.get(j1, i2)) { j2 = l1 + 1; abyte0[l1] = (byte)b(i2, j1, i, j); } else { j2 = l1; } i2 -= 2; k2 = j1 + 2; if (i2 >= 0 && k2 < j) goto _L3; else goto _L2 _L2: l2 = i2 + 1; i3 = k2 + 3; j3 = l2; k3 = i3; l3 = j2; _L6: if (j3 >= 0 && k3 < j && !b.get(k3, j3)) { i4 = l3 + 1; abyte0[l3] = (byte)b(j3, k3, i, j); } else { i4 = l3; } j3 += 2; j4 = k3 - 2; if (j3 < i && j4 >= 0) { break; /* Loop/switch isn't completed */ } k4 = j3 + 3; l4 = j4 + 1; _L1: int k2; if (k4 >= i && l4 >= j) { if (i4 != c.getTotalCodewords()) { throw FormatException.getFormatInstance(); } else { return abyte0; } } i1 = i4; k = l4; l = k4; if (true) goto _L5; else goto _L4 _L4: k3 = j4; l3 = i4; goto _L6 j1 = k; int k1 = l; l1 = i1; i2 = k1; goto _L7 } int c(int i, int j) { int k; int l; int i1; int j1; int k1; int l1; int i2; int j2; if (a(i - 1, 0, i, j)) { k = 1; } else { k = 0; } l = k << 1; if (a(i - 1, j - 1, i, j)) { l |= 1; } i1 = l << 1; if (a(0, j - 3, i, j)) { i1 |= 1; } j1 = i1 << 1; if (a(0, j - 2, i, j)) { j1 |= 1; } k1 = j1 << 1; if (a(0, j - 1, i, j)) { k1 |= 1; } l1 = k1 << 1; if (a(1, j - 3, i, j)) { l1 |= 1; } i2 = l1 << 1; if (a(1, j - 2, i, j)) { i2 |= 1; } j2 = i2 << 1; if (a(1, j - 1, i, j)) { j2 |= 1; } return j2; } int d(int i, int j) { int k; int l; int i1; int j1; int k1; int l1; int i2; int j2; if (a(i - 3, 0, i, j)) { k = 1; } else { k = 0; } l = k << 1; if (a(i - 2, 0, i, j)) { l |= 1; } i1 = l << 1; if (a(i - 1, 0, i, j)) { i1 |= 1; } j1 = i1 << 1; if (a(0, j - 2, i, j)) { j1 |= 1; } k1 = j1 << 1; if (a(0, j - 1, i, j)) { k1 |= 1; } l1 = k1 << 1; if (a(1, j - 1, i, j)) { l1 |= 1; } i2 = l1 << 1; if (a(2, j - 1, i, j)) { i2 |= 1; } j2 = i2 << 1; if (a(3, j - 1, i, j)) { j2 |= 1; } return j2; } }